/**
 * <copyright>
 * </copyright>
 *
 * 
 */
package de.claaswilke.presents.resource.presents.mopp;

/**
 * Abstract super class for all expected elements. Provides methods to add
 * followers.
 */
public abstract class PresentsAbstractExpectedElement implements de.claaswilke.presents.resource.presents.IPresentsExpectedElement {
	
	private org.eclipse.emf.ecore.EClass ruleMetaclass;
	
	private java.util.Set<de.claaswilke.presents.resource.presents.util.PresentsPair<de.claaswilke.presents.resource.presents.IPresentsExpectedElement, de.claaswilke.presents.resource.presents.mopp.PresentsContainedFeature[]>> followers = new java.util.LinkedHashSet<de.claaswilke.presents.resource.presents.util.PresentsPair<de.claaswilke.presents.resource.presents.IPresentsExpectedElement, de.claaswilke.presents.resource.presents.mopp.PresentsContainedFeature[]>>();
	
	public PresentsAbstractExpectedElement(org.eclipse.emf.ecore.EClass ruleMetaclass) {
		super();
		this.ruleMetaclass = ruleMetaclass;
	}
	
	public org.eclipse.emf.ecore.EClass getRuleMetaclass() {
		return ruleMetaclass;
	}
	
	public void addFollower(de.claaswilke.presents.resource.presents.IPresentsExpectedElement follower, de.claaswilke.presents.resource.presents.mopp.PresentsContainedFeature[] path) {
		followers.add(new de.claaswilke.presents.resource.presents.util.PresentsPair<de.claaswilke.presents.resource.presents.IPresentsExpectedElement, de.claaswilke.presents.resource.presents.mopp.PresentsContainedFeature[]>(follower, path));
	}
	
	public java.util.Collection<de.claaswilke.presents.resource.presents.util.PresentsPair<de.claaswilke.presents.resource.presents.IPresentsExpectedElement, de.claaswilke.presents.resource.presents.mopp.PresentsContainedFeature[]>> getFollowers() {
		return followers;
	}
	
}
